import { defineStore } from "pinia";
import { ElMessage } from "element-plus";
//引入api
import {
  requestCategory1,
  requestCategory2,
  requestCategory3,
} from "@/api/attr";
//引入type
import type { reqCategoryType, reqCategoryItemType } from "@/api/attr";

//定义state的类型限制
interface storeType {
  categoryList1: reqCategoryType;
  categoryList2: reqCategoryType;
  categoryList3: reqCategoryType;
  category1Id: number | null;
  category2Id: number | null;
  category3Id: number | null;
}
//创建categroy小仓库
const userAttrStore = defineStore("attr", {
  //state
  state: (): storeType => {
    return {
      categoryList1: [],
      categoryList2: [],
      categoryList3: [],
      category1Id: null,
      category2Id: null,
      category3Id: null,
    };
  },
  //actions
  actions: {
    //封装请求一级分类函数
    async getcategoryList1() {
      try {
        //发送请求
        const result = await requestCategory1();
        //设置categoryList1
        this.categoryList1 = result;
      } catch (e) {
        ElMessage.error("请求一级分类失败");
      }
    },
    //请求二级分类数据
    async getCategory2() {
      try {
        //发送请求
        const result = await requestCategory2(this.category1Id as number);
        //把一级分类的值赋值给state
        
        this.categoryList2 = result;
      } catch (e) {
        ElMessage.error("请求二级分类失败");
      }
    },
    //请求三级分类数据
    async getCategory3() {
      try {
        //发送请求
        const result = await requestCategory3(this.category2Id as number);
        //把一级分类的值赋值给state
        this.categoryList3 = result;
      } catch (e) {
        ElMessage.error("请求三级分类失败");
      }
    },
  },
  //getters
  getters: {},
});

export default userAttrStore;
